<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>SQLite</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/SQLite"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-SQLite rootpage-SQLite skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">SQLite</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><div class="infobox_v3 infobox infobox--frwiki noarchive" style="width:260px">
<div class="entete icon informatique" style="background-color: #92D5F5; color: #000000;"><style data-mw-deduplicate="TemplateStyles:r228712691">
/* start https://fr.wikipedia.org/ */
.mw-parser-output .entete.informatique{background-image:url("./_mw_/Picto.nfo.png")}
/* end https://fr.wikipedia.org/ */
</style>
<div>SQLite</div>
</div>
<div class="images">
</div>
<div class="hr" style="background-color:#92D5F5; height:2px;"></div>
<div class="images">
</div>
<table><caption style="background-color:#92D5F5;color:#000000;">Informations</caption>
<tbody><tr>
<th scope="row"><a href="D%C3%A9veloppeur" title="Développeur">Développé par</a></th>
<td>
<span class="wd_p178"><a href="D._Richard_Hipp" title="D. Richard Hipp">D. Richard Hipp</a></span></td>
</tr>
<tr>
<th scope="row"> <a href="Version_d'un_logiciel" title="Version d'un logiciel">Première version</a>
</th>
<td>
<span class="wd_p571"><time class="nowrap" datetime="2000-08" data-sort-value="2000-08">Août 2000</time></span></td>
</tr>
<tr>
<th scope="row"> <a href="Version_d'un_logiciel" title="Version d'un logiciel">Dernière version</a>
</th>
<td>
<span class="wd_p348">3.50.4 (<time class="nowrap" datetime="2025-07-30" data-sort-value="2025-07-30">30 juillet 2025</time>)<sup id="cite_ref-wikidata-dbf86f20123c0534703f2f60bd6ddbbd36b2b3d9_1-0" class="reference"><a href="#cite_note-wikidata-dbf86f20123c0534703f2f60bd6ddbbd36b2b3d9-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></span></td>
</tr>
<tr>
<th scope="row"><a href="D%C3%A9p%C3%B4t_(informatique)" title="Dépôt (informatique)">Dépôt</a></th>
<td>
<span class="wd_p1324"><a rel="nofollow" class="external text" href="https://sqlite.org/src">sqlite.org/src</a></span></td>
</tr>
<tr>
<th scope="row"> <a href="Langage_de_programmation" title="Langage de programmation">Écrit en</a>
</th>
<td>
<span class="wd_p277"><a href="C_(langage)" title="C (langage)">C</a></span></td>
</tr>
<tr>
<th scope="row"><a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">Système d'exploitation</a></th>
<td>
<span class="wd_p306">Multiplateforme <small>(<a href="https://www.wikidata.org/wiki/Q174666" class="extiw external" title="d:Q174666"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small></span></td>
</tr>
<tr>
<th scope="row"><a href="Format_de_donn%C3%A9es" title="Format de données">Formats</a> lus</th>
<td>
<span class="wd_p1072">SQLite database file format <small>(<a href="https://www.wikidata.org/wiki/Q28600453" class="extiw external" title="d:Q28600453"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small> et SQLite rollbak journal <small>(<a href="https://www.wikidata.org/wiki/Q105853254" class="extiw external" title="d:Q105853254"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small></span></td>
</tr>
<tr>
<th scope="row"><a href="Format_de_donn%C3%A9es" title="Format de données">Formats</a> écrits</th>
<td>
<span class="wd_p1073">SQLite database file format <small>(<a href="https://www.wikidata.org/wiki/Q28600453" class="extiw external" title="d:Q28600453"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small>, SQLite Zipvfs compressed database <small>(<a href="https://www.wikidata.org/wiki/Q105851936" class="extiw external" title="d:Q105851936"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small> et SQLite rollbak journal <small>(<a href="https://www.wikidata.org/wiki/Q105853254" class="extiw external" title="d:Q105853254"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small></span></td>
</tr>
<tr>
<th scope="row"> Type
</th>
<td>
<span class="wd_p31">Système de gestion de base de données embarqué <small>(<a href="https://www.wikidata.org/wiki/Q35687379" class="extiw external" title="d:Q35687379"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small></span></td>
</tr>
<tr>
<th scope="row"><a href="Licence_de_logiciel" title="Licence de logiciel">Licence</a></th>
<td>
Domaine public</td>
</tr>
<tr>
<th scope="row"><a href="Site_web" title="Site web">Site web</a></th>
<td>
<span class="wd_p856"><a rel="nofollow" class="external text" href="https://sqlite.org">sqlite.org</a></span></td>
</tr>
</tbody></table>
<p class="mw-empty-elt">
</p>
</div>
<p><i><b>SQLite</b></i> (prononcé [<span title="Alphabet phonétique international" class="API" style="font-family:'DejaVu Sans','Doulos SIL','Lucida Grande','Segoe UI','Arial Unicode MS','Adobe Pi Std','Lucida Sans Unicode','Chrysanthi Unicode',Code2000,Gentium,GentiumAlt,'TITUS Cyberbit Basic','Bitstream Vera Sans','Bitstream Cyberbit','Hiragino Kaku Gothic Pro','Matrix Unicode',sans-serif;"><a href="Alphabet_phon%C3%A9tique_international" title="Alphabet phonétique international"><span class="nowrap">ɛs.ky.ɛl.ajt</span></a></span>]) est une <a href="Biblioth%C3%A8que_logicielle" title="Bibliothèque logicielle">bibliothèque</a> écrite en <a href="Langage_de_programmation" title="Langage de programmation">langage</a> <a href="C_(langage)" title="C (langage)">C</a> qui propose un <a href="Moteur_de_base_de_donn%C3%A9es" title="Moteur de base de données">moteur</a> de <a href="Base_de_donn%C3%A9es_relationnelle" title="Base de données relationnelle">base de données relationnelle</a> accessible par le langage <a href="Structured_Query_Language" title="Structured Query Language">SQL</a>. SQLite implémente en grande partie le standard <a href="Structured_Query_Language#Historique" title="Structured Query Language">SQL-92</a> et des <a href="Transaction_informatique" title="Transaction informatique">propriétés ACID</a>.
</p><p>Contrairement aux <a href="Serveur_informatique#Base_de_données" title="Serveur informatique">serveurs</a> de bases de données traditionnels, tels que <a href="MySQL" title="MySQL">MySQL</a>, <a href="MariaDB" title="MariaDB">MariaDb</a> ou <a href="PostgreSQL" title="PostgreSQL">PostgreSQL</a>, sa particularité est de ne pas reproduire le schéma habituel <a href="Client-serveur" title="Client-serveur">client-serveur</a> mais d'être directement intégrée aux <a href="Programme_informatique" title="Programme informatique">programmes</a>. L'intégralité de la <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a> (déclarations, <a href="Table_(base_de_donn%C3%A9es)" title="Table (base de données)">tables</a>, <a href="Index_(base_de_donn%C3%A9es)" title="Index (base de données)">index</a> et données) est stockée dans un <a href="Fichier_informatique" title="Fichier informatique">fichier</a> <a href="Logiciel_multiplateforme" title="Logiciel multiplateforme">indépendant de la plateforme</a>.
</p><p><a href="D._Richard_Hipp" title="D. Richard Hipp">D. Richard Hipp</a>, le créateur de SQLite, a choisi de mettre cette bibliothèque ainsi que son <a href="Code_source" title="Code source">code source</a> dans le <a href="Domaine_public_(propri%C3%A9t%C3%A9_intellectuelle)" title="Domaine public (propriété intellectuelle)">domaine public</a>, ce qui permet son utilisation sans restriction aussi bien dans les projets <a href="Open_source" title="Open source">open source</a> que dans les projets <a href="Propri%C3%A9t%C3%A9_intellectuelle" title="Propriété intellectuelle">propriétaires</a>. Le créateur ainsi qu'une partie des développeurs principaux de SQLite sont employés par la société <a href="%C3%89tats-Unis" title="États-Unis">américaine</a> Hwaci<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.
</p><p>SQLite est le moteur de base de données le plus utilisé au monde, grâce à son utilisation :
</p>
<ul><li>dans de nombreux <a href="Logiciel" title="Logiciel">logiciels</a> grand public comme <a href="Mozilla_Firefox" title="Mozilla Firefox">Firefox</a>, <a href="Skype" title="Skype">Skype</a>, <a href="Gears" title="Gears">Google Gears</a>,</li>
<li>dans certains produits d'<a href="Apple" title="Apple">Apple</a>, d'<a href="Adobe_(entreprise)" title="Adobe (entreprise)">Adobe</a> et de <a href="McAfee" title="McAfee">McAfee</a>,</li>
<li>dans les <a href="Biblioth%C3%A8que_logicielle" title="Bibliothèque logicielle">bibliothèques</a> standards de nombreux langages comme <a href="PHP" title="PHP">PHP</a> ou <a href="Python_(langage)" title="Python (langage)">Python</a>.</li></ul>
<p>De par son extrême légèreté (moins de 600 <a href="Octet#Multiples_normalis.C3.A9s" title="Octet">Kio</a><sup id="cite_ref-About_SQLite_3-0" class="reference"><a href="#cite_note-About_SQLite-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>), il est également très populaire sur les <a href="Syst%C3%A8me_embarqu%C3%A9" title="Système embarqué">systèmes embarqués</a>, notamment sur la plupart des <a href="Smartphone" title="Smartphone">smartphones</a> et <a href="Tablette_tactile" title="Tablette tactile">tablettes</a> modernes : les <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">systèmes d'exploitation</a> mobiles <a href="IOS" title="IOS">iOS</a>, <a href="Android" title="Android">Android</a> et <a href="Symbian_OS" title="Symbian OS">Symbian</a> l'utilisent comme base de données embarquée<sup id="cite_ref-Well-Known_Users_Of_SQLite_4-0" class="reference"><a href="#cite_note-Well-Known_Users_Of_SQLite-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>. Au total, on peut dénombrer plus d'un milliard de copies connues et déclarées de la bibliothèque<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Historique">Historique</h2></div>
<p><a href="D._Richard_Hipp" title="D. Richard Hipp">D. Richard Hipp</a> et un collègue commencèrent la conception de SQLite début <a href="2000_en_informatique" title="2000 en informatique">2000</a> lorsqu'ils travaillaient chez <a href="General_Dynamics" title="General Dynamics">General Dynamics</a>, alors en contrat avec l'<a href="US_Navy" class="mw-redirect" title="US Navy">US Navy</a>. SQLite devait être utilisée dans des <a href="Missile#Guidage" title="Missile">missiles guidés</a>, dans le but de remplacer des <a href="Base_de_donn%C3%A9es" title="Base de données">bases de données</a> <a href="IBM" title="IBM">IBM</a> <a href="Informix" title="Informix">Informix</a> fonctionnant sur des machines <a href="HP-UX" title="HP-UX">HP-UX</a>. Le principal objectif était de pouvoir s'affranchir de toute installation ou administration : l'installation ou la mise à jour de la base de données Informix pouvait prendre une journée entière<sup id="cite_ref-Owens06_6-0" class="reference"><a href="#cite_note-Owens06-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>.
</p><p>En <time class="nowrap" datetime="2000-08" data-sort-value="2000-08">août 2000</time>, la première version de SQLite est publiée. Elle utilisait <a href="Gdbm" class="mw-redirect" title="Gdbm">gdbm</a> (<a href="GNU" title="GNU">GNU</a> Database Manager) pour manipuler des <a href="Arbre_B" title="Arbre B">arbres B</a>.
</p><p>SQLite 2.0 supprime la dépendance à <a href="Dbm" title="Dbm">gdbm</a> et ajoute la prise en charge des transactions.
</p><p>SQLite 3.0, produite avec l'aide d'<a href="America_Online" class="mw-redirect" title="America Online">AOL</a>, est publiée en <time class="nowrap date-lien" datetime="2004" data-sort-value="2004"><a href="2004_en_informatique" title="2004 en informatique">2004</a></time> et ajoute, entre autres, la <a href="Internationalisation_de_logiciel" class="mw-redirect" title="Internationalisation de logiciel">régionalisation</a> (avec le support des collations et de l'<a href="Unicode" title="Unicode">Unicode</a>) et la déclaration des <a href="Type_(informatique)" title="Type (informatique)">types de données</a>.
</p><p>En <time>2011</time>, Hipp annonce souhaiter ajouter une interface <a href="NoSQL" title="NoSQL">NoSQL</a> à SQLite<sup class="need_ref_tag" style="padding-left:2px;">[<abbr class="abbr" title="référence">réf.</abbr> souhaitée]</sup>, ainsi que UnQL, un sur-ensemble fonctionnel de SQL, conçu pour les <a href="Base_de_donn%C3%A9es_orient%C3%A9e_documents" title="Base de données orientée documents">bases de données orientées document</a>.<sup class="need_ref_tag" style="padding-left:2px;">[<abbr class="abbr" title="référence">réf.</abbr> souhaitée]</sup>
</p><p>SQLite est l'un des quatre formats recommandés par la <a href="Biblioth%C3%A8que_du_Congr%C3%A8s" title="Bibliothèque du Congrès">Bibliothèque du Congrès</a> pour le stockage à long terme des ensembles de données<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Caractéristiques"><span id="Caract.C3.A9ristiques"></span>Caractéristiques</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Base_de_données_embarquée"><span id="Base_de_donn.C3.A9es_embarqu.C3.A9e"></span>Base de données embarquée</h3></div>
<p>La majorité des <a href="SGBD" class="mw-redirect" title="SGBD">systèmes de gestion de base de données</a> sont construits selon le <a href="Paradigme" title="Paradigme">paradigme</a> <a href="Client-serveur" title="Client-serveur">client-serveur</a>, c'est-à-dire qu'une <a href="Biblioth%C3%A8que_logicielle" title="Bibliothèque logicielle">bibliothèque logicielle</a> cliente est intégrée et utilisée dans une ou plusieurs applications alors que le <a href="Moteur_de_base_de_donn%C3%A9es" title="Moteur de base de données">moteur de base de données</a> fonctionne dans un espace d'exécution qui lui est propre, voire sur une machine différente, en tant que <a href="Daemon_(informatique)" title="Daemon (informatique)">service informatique</a>.
</p><p>SQLite, au contraire, est directement intégrée dans l'application qui utilise sa bibliothèque logicielle, avec son moteur de base de données. L'accès à une <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a> avec SQLite se fait par l'ouverture du fichier correspondant à celle-ci : chaque base de données est enregistrée dans un fichier qui lui est propre, avec ses déclarations, ses tables et ses index mais aussi ses données.
</p><p>Cette caractéristique rend SQLite intéressante comme alternative aux <a href="Fichier_texte" title="Fichier texte">fichiers textes</a>, utilisés comme moyen de stockage intégré dans beaucoup d'applications (<a href="Param%C3%A8tre_(programmation_informatique)#Informatique" title="Paramètre (programmation informatique)">paramètres</a>, <a href="Historique_(informatique)" title="Historique (informatique)">historique</a>, <a href="M%C3%A9moire_cache" title="Mémoire cache">cache</a>...), car elle rend l'accès aux données plus rapide, plus sécurisé, plus structuré, plus facile et totalement <a href="Multiplate-forme" class="mw-redirect" title="Multiplate-forme">indépendant de la plateforme</a>, tout en ne portant pas atteinte à la facilité de déploiement de l'application qui l'utilise.
</p><p>La suppression de l'intermédiaire entre l'application et les données permet également de réduire légèrement la latence d'accès aux données comparée aux systèmes utilisant le <a href="Paradigme" title="Paradigme">paradigme</a> client-serveur.
</p><p>Cependant, cette architecture pose plusieurs problèmes :
</p>
<ul><li>lorsqu'un nombre important de clients accèdent à une même base, si un des clients commence la lecture d'une partie, la totalité de la base est bloquée en écriture pour les autres clients, et inversement si un des clients démarre l'écriture dans une partie, la totalité de la base est bloquée en lecture pour les autres clients. Ces derniers sont alors mis en attente durant ce laps de temps, ce qui peut être contre-performant ;</li>
<li>il est très compliqué de répartir la charge sur plusieurs machines : l'utilisation d'un <a href="Syst%C3%A8me_de_fichiers#Réseau_(NFS_:_network_file_system_en_anglais)" title="Système de fichiers">système de fichiers sur le réseau</a> engendre des <a href="Latence_(informatique)" title="Latence (informatique)">latences</a> et un trafic considérable, du fait que la base doit être rechargée chez le client à chaque ouverture. Ce problème est encore plus important avec des <a href="Site_web" title="Site web">sites web</a> où la base est rouverte pour chaque page demandée. De plus, il peut se produire des erreurs dans la <a href="Synchronisation_de_fichiers" title="Synchronisation de fichiers">synchronisation</a> des <a href="Verrou_(informatique)" title="Verrou (informatique)">verrous</a> sur les fichiers qui pourraient autoriser l'écriture simultanée à deux clients différents sur une même partie de la base et ainsi aboutir à la corruption de la base de données ;</li>
<li>avec des bases de grande envergure, il est impossible de diviser la base en plusieurs parties ou fichiers dans le but de distribuer la charge sur plusieurs machines. Certains systèmes de fichiers, comme le <a href="FAT_32" class="mw-redirect" title="FAT 32">FAT 32</a>, ont une taille maximale de fichier qui pourrait rapidement limiter l'expansion d'une base.</li></ul>
<p>Il n'y a pas d'<a href="Extension_de_nom_de_fichier" title="Extension de nom de fichier">extension</a> propre aux fichiers de base de données de SQLite, mais il est courant de rencontrer des extensions comme <tt>.sqlite</tt> ou <tt>.db</tt>, parfois suivie du numéro de version de la bibliothèque (<tt>.sqlite3</tt>, <tt>.db2</tt>, etc.). Il est possible d'utiliser une base de données uniquement sauvegardée en <a href="M%C3%A9moire_vive" title="Mémoire vive">mémoire vive</a>, sans créer de fichier de base de données sur le disque, via le nom de fichier spécial <tt>:memory:</tt>.
</p><p>D'une manière générale, il est conseillé d'utiliser SQLite là où les données ne sont pas centralisées et où l'expansion de la taille de la base ne risque pas de devenir critique. Si la base de données a pour but de centraliser une grande masse de données et de les fournir à un grand nombre de clients, il est préférable d'utiliser des <a href="SGBD" class="mw-redirect" title="SGBD">SGBD</a> basés sur le paradigme client-serveur. SQLite a pour objectif de remplacer les fichiers texte et non les serveurs de base de données traditionnels<sup id="cite_ref-About_SQLite_3-1" class="reference"><a href="#cite_note-About_SQLite-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Compilateur_et_machine_virtuelle">Compilateur et machine virtuelle</h3></div>
<p>Lorsqu'une requête SQL est transmise à SQLite par l'intermédiaire de l'<a href="Interface_de_programmation" title="Interface de programmation">interface de programmation</a>, elle est <a href="Compilation_(informatique)" class="mw-redirect" title="Compilation (informatique)">compilée</a> avant d'être exécutée.
</p><p>Le séquenceur du <a href="Compilateur" title="Compilateur">compilateur</a> divise les commandes données en parties traitables séparément (une requête et sa sous-requête par exemple), celles-ci sont passées à l'<a href="Analyse_syntaxique" title="Analyse syntaxique">analyseur syntaxique</a> qui s'occupe de décomposer les requêtes en différents objets qui représentent les différents ordres et clauses du langage SQL. Ces objets sont passés au générateur de code qui crée un code intermédiaire de bas niveau, ou <a href="Bytecode" title="Bytecode">bytecode</a>.
</p><p>Le code obtenu est un ensemble d'<a href="Instruction_informatique" title="Instruction informatique">instructions</a> (137 instructions différentes) appelées <a href="Langage_machine#Opcode" title="Langage machine">OpCodes</a><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>. Celui-ci est lancé dans la <a href="Machine_virtuelle" title="Machine virtuelle">machine virtuelle</a> de SQLite, qui les voit comme de petits programmes décrivant des opérations de recherche, de lecture et de modifications des données<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>.
</p><p>Lorsque la machine virtuelle interprète ces instructions, elle fait appel au gestionnaire d'<a href="Arbre_B" title="Arbre B">arbre B</a> qui repose sur des couches de plus bas niveau dont le <a href="M%C3%A9moire_cache" title="Mémoire cache">cache</a> des <a href="Pagination_(informatique)" class="mw-redirect" title="Pagination (informatique)">pages</a> <a href="Disque_dur" title="Disque dur">disque</a> et sa <a href="Couche_d'abstraction_mat%C3%A9rielle" title="Couche d'abstraction matérielle">couche d'abstraction matérielle</a><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Gestion_des_droits">Gestion des droits</h3></div>
<p>SQLite n'intègre pas de gestion des <a href="Droit_d'acc%C3%A8s_(informatique)" title="Droit d'accès (informatique)">droits d'accès</a> et de modification des données. La gestion est faite par le <a href="Syst%C3%A8me_de_fichiers" title="Système de fichiers">système de fichiers</a> du <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a> : si le fichier contenant la base de données n'est pas accessible en écriture à un utilisateur, ce dernier ne pourra également pas modifier les <a href="Enregistrement_(base_de_donn%C3%A9es)" title="Enregistrement (base de données)">enregistrements</a> et la structure de la base de données.
</p><p>La gestion des droits avec <tt>GRANT</tt> et <tt>REVOKE</tt> est donc inexistante, bien que ceux-ci fassent partie de la spécification <a href="Structured_Query_Language#Historique" title="Structured Query Language">SQL-92</a><sup id="cite_ref-SQL_Features_That_SQLite_Does_Not_Implement_12-0" class="reference"><a href="#cite_note-SQL_Features_That_SQLite_Does_Not_Implement-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>.
</p><p>L'utilisation d'une base SQLite ne nécessite aucune procédure d'installation ou de configuration<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Portabilité"><span id="Portabilit.C3.A9"></span>Portabilité</h3></div>
<p>La bibliothèque est entièrement écrite en <a href="C_(langage)#Normalisation" title="C (langage)">C-ANSI</a>, la version normalisée du <a href="Langage_de_programmation" title="Langage de programmation">langage de programmation</a> <a href="C_(langage)" title="C (langage)">C</a>, et n'utilise aucune autre bibliothèque externe que la <a href="Biblioth%C3%A8que_standard_du_C" title="Bibliothèque standard du C">bibliothèque standard</a> du langage. Ceci rend SQLite <a href="Compilateur" title="Compilateur">compilable</a> sans modification majeure sur toutes les <a href="Architecture_informatique" class="mw-redirect" title="Architecture informatique">architectures informatiques</a> mettant à disposition un compilateur C respectant la norme ANSI<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>.
</p><p>Les fichiers de base de données de SQLite sont entièrement indépendants du système d'exploitation et de l'architecture sur laquelle ils sont utilisés. Le même fichier de base de données peut être utilisé sur deux architectures ayant un fonctionnement radicalement différent, SQLite fournissant une <a href="Abstraction_(informatique)" title="Abstraction (informatique)">couche d'abstraction</a> transparente pour le développeur. Les fichiers sont <a href="Compatibilit%C3%A9_ascendante_et_descendante" title="Compatibilité ascendante et descendante">compatibles entre eux</a> pour chaque version majeure de la bibliothèque depuis la version <tt>3.0.0</tt> de SQLite, ainsi un fichier créé avec la version <tt>3.0.0</tt> sera utilisable avec la version <tt>3.6.19</tt> et vice-versa, les fichiers créés entre deux versions majeures différentes (<tt>2.0.0</tt> et <tt>3.0.0</tt> par exemple) peuvent s'avérer compatibles (en particulier en compatibilité ascendante), mais ce n'est pas toujours le cas<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Types_de_données"><span id="Types_de_donn.C3.A9es"></span>Types de données</h3></div>
<p>SQLite utilise un <a href="Typage" class="mw-redirect" title="Typage">typage</a> <a href="Typage_dynamique" title="Typage dynamique">dynamique</a> pour le contenu des cellules, contrairement à la quasi-totalité des <a href="SGBD" class="mw-redirect" title="SGBD">SGBD</a> qui utilisent un <a href="Type_statique" class="mw-redirect" title="Type statique">typage statique</a> : lors de la création d'une nouvelle table dans la base de données, c'est un type recommandé ou d'affinité, non forcé, de la donnée à stocker dans la colonne qui est renseigné et non un type qui définit la façon dont celle-ci sera représentée en mémoire, cette tâche étant réservée à la cellule elle-même. Lorsque des données seront entrées dans la base, SQLite tentera de convertir les nouvelles données vers le type recommandé mais ne le fera pas si cela s'avère impossible<sup id="cite_ref-Datatypes_In_SQLite_Version_3_16-0" class="reference"><a href="#cite_note-Datatypes_In_SQLite_Version_3-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>.
</p><p>Il existe plusieurs types d'affinité dans SQLite, ceux-ci définissant la façon dont SQLite va travailler lors de l'entrée des nouvelles données<sup id="cite_ref-Datatypes_In_SQLite_Version_3_16-1" class="reference"><a href="#cite_note-Datatypes_In_SQLite_Version_3-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> :
</p>
<ul><li><tt>TEXT</tt> : enregistre la donnée comme une <a href="Chaine_de_caract%C3%A8res" class="mw-redirect" title="Chaine de caractères">chaine de caractères</a>, sans limite de taille. Si un nombre est entré dans une colonne de ce type, il sera automatiquement converti en une chaine de caractères ;</li>
<li><tt>NUMERIC</tt> : tente d'enregistrer la donnée comme un <a href="Entier_(informatique)" title="Entier (informatique)">entier</a> ou comme un <a href="Nombre_r%C3%A9el" title="Nombre réel">réel</a>, mais si cela s'avère impossible, la donnée sera enregistrée comme une chaine de caractères ;</li>
<li><tt>INTEGER</tt> : enregistre la donnée comme un entier si celle-ci peut être encodée sans perte, mais peut utiliser les types <tt>REAL</tt> ou <tt>TEXT</tt> si ça ne peut être fait ;</li>
<li><tt>REAL</tt> : enregistre la donnée comme un réel, même s'il s'agit d'un entier. Si la valeur est trop grande, la donnée sera convertie en chaine de caractères ;</li>
<li><tt>NONE</tt> : la donnée est enregistrée telle quelle, sans conversion.</li></ul>
<p>Ainsi, chaque type d'affinité peut accepter n'importe quel type de donnée, la seule exception est le type particulier <tt>INTEGER PRIMARY KEY</tt>, lorsqu'il est appliqué sur une seule colonne, car il ne s'agit pas d'un type habituel mais d'un alias à la colonne interne au moteur <tt><a href="#ROWID_et_AUTOINCREMENT">ROWID</a></tt> qui correspond à l'adresse de l'enregistrement, unique à travers la table<sup id="cite_ref-SQLite_Query_Language:_CREATE_TABLE_17-0" class="reference"><a href="#cite_note-SQLite_Query_Language:_CREATE_TABLE-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>.
</p><p>L'utilisation d'un typage dynamique améliore l'homogénéité entre les données de la base de données et les types du langage utilisé pour l'interroger si celui-ci est également un langage au typage dynamique (comme <a href="Python_(langage)" title="Python (langage)">Python</a>, <a href="PHP" title="PHP">PHP</a>, <a href="Perl_(langage)" title="Perl (langage)">Perl</a> ou <a href="Ruby" title="Ruby">Ruby</a>) sans poser de réels problèmes avec les langages utilisant un typage statique (comme <a href="C_(langage)" title="C (langage)">C</a>/<a href="C%2B%2B" title="C++">C++</a> ou <a href="Java_(langage)" title="Java (langage)">Java</a>).
</p>
<div class="mw-heading mw-heading4"><h4 id="Détermination_du_type_d'affinité"><span id="D.C3.A9termination_du_type_d.27affinit.C3.A9"></span>Détermination du type d'affinité</h4></div>
<p>Pour maintenir la compatibilité avec les autres <a href="Base_de_donn%C3%A9es_relationnelle" title="Base de données relationnelle">bases de données relationnelles</a>, SQLite convertit automatiquement les noms des types déclarés dans le type d'affinité correspondant le mieux, ainsi :
</p>
<ul><li>tous les noms de type contenant le mot clé <tt>INT</tt> seront reconnus comme des champs <tt>INTEGER</tt>. Cependant, seule la déclaration <tt>INTEGER PRIMARY KEY</tt> sera reconnue comme un alias du <tt>ROWID</tt> ;</li>
<li>tous les noms de type contenant un des <a href="Mot_cl%C3%A9" title="Mot clé">mots clés</a> suivants : <tt>CHAR</tt> (ceci comprend <tt>VARCHAR</tt>), <tt>CLOB</tt> ou <tt>TEXT</tt> seront reconnus comme des champs <tt>TEXT</tt> ;</li>
<li>tous les noms de type contenant le mot clé <tt>BLOB</tt> seront reconnus comme des champs à l'affinité <tt>NONE</tt> ;</li>
<li>tous les noms de type contenant un des mots clés suivants : <tt>REAL</tt>, <tt>FLOAT</tt> ou <tt>DOUBLE</tt> seront reconnus comme des champs <tt>REAL</tt> ;</li>
<li>dans tous les autres cas, ou si le type n'est pas renseigné, c'est l'affinité <tt>NUMERIC</tt> qui sera utilisée.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Classes_de_stockage">Classes de stockage</h4></div>
<p>Bien que SQLite utilise un typage dynamique, la représentation en mémoire et les traitements effectués sur les données nécessitent l'utilisation de différentes classes de stockage. Ceci est uniquement valable pour la version 3 et ses versions ultérieures, car les données étaient enregistrées comme des chaines de caractères dans les versions antérieures.
</p><p>Toutes les données manipulées par le moteur de base de données utilisent l'un des types suivants<sup id="cite_ref-Datatypes_In_SQLite_Version_3_16-2" class="reference"><a href="#cite_note-Datatypes_In_SQLite_Version_3-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> :
</p>
<ul><li><tt>NULL</tt> : la donnée correspond au type spécial <tt><a href="NULL" class="mw-redirect" title="NULL">NULL</a></tt>, qui indique l'absence d'information ou une valeur non définie ;</li>
<li><tt>INTEGER</tt> : la donnée est un <a href="Format_de_donn%C3%A9es#Nombres_entiers" title="Format de données">nombre entier signé</a> et celui-ci est enregistré, en fonction de son <a href="Ordre_de_grandeur" title="Ordre de grandeur">ordre de grandeur</a>, sur 1, 2, 3, 4, 6 ou 8 <a href="Octet" title="Octet">octets</a>, mais en mémoire, c'est converti en 8 octets (8-byte signed integer<sup id="cite_ref-Datatypes_In_SQLite_Version_3_16-3" class="reference"><a href="#cite_note-Datatypes_In_SQLite_Version_3-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>) ;</li>
<li><tt>REAL</tt> : la donnée est un nombre à <a href="Virgule_flottante" title="Virgule flottante">virgule flottante</a> enregistré sur 8 octets selon la <a href="IEEE_754" title="IEEE 754">norme IEEE</a> ;</li>
<li><tt>TEXT</tt> : la donnée est une chaine de caractères, encodée en <a href="UTF-8" title="UTF-8">UTF-8</a> (par défaut<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>), <a href="UTF-16" title="UTF-16">UTF-16-BE</a> ou <a href="UTF-16" title="UTF-16">UTF-16-LE</a> ;</li>
<li><tt>BLOB</tt> : la donnée est enregistrée comme elle a été donnée.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Type_NULL">Type <tt>NULL</tt></h4></div>
<p>La norme ne définit pas exactement de quelle façon doit être traité le type <tt><a href="NULL" class="mw-redirect" title="NULL">NULL</a></tt>.
</p><p>Comme pour la majorité des bases de données relationnelles, tous les enregistrements <tt>NULL</tt> sont considérés comme distincts par la contrainte <tt>UNIQUE</tt> mais sont considérés comme identiques par l'opérateur <tt>UNION</tt> et par le mot clé <tt>DISTINCT</tt><sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>.
</p><p>Les opérations arithmétiques comprenant un type <tt>NULL</tt> dans leur expression retournent la valeur <tt>UNKNOWN</tt> (valeur indéterminée). Dans les <a href="Alg%C3%A8bre_de_Boole_(logique)" title="Algèbre de Boole (logique)">opérations booléennes</a>, la valeur de retour pourrait être <tt>UNKNOWN</tt> si un type <tt>NULL</tt> intervient et que le résultat ne peut être déterminé avec certitude : <tt>NULL OR 1</tt> donnera la valeur <tt>1</tt>, mais <tt>NULL OR 0</tt> donnera la valeur <tt>UNKNOWN</tt> car l'opération ne peut être résolue avec certitude.
</p>
<div class="mw-heading mw-heading4"><h4 id="Dates">Dates</h4></div>
<p>SQLite ne possède pas de type pour représenter des dates. Cependant, un ensemble de fonctions existe pour manipuler celles-ci. Le stockage d'une date peut se faire dans une chaine de caractères sous sa forme <a href="ISO_8601" title="ISO 8601">ISO 8601</a> ou dans un entier sous la forme d'un <a href="Timestamp_(informatique)" class="mw-redirect" title="Timestamp (informatique)">timestamp UNIX</a><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Contraintes">Contraintes</h3></div>
<p>SQLite gère les contraintes sur une ou plusieurs colonnes. Les contraintes <tt>NOT NULL</tt>, <tt>CHECK</tt>, <tt>DEFAULT</tt> et <tt>COLLATE</tt> sont déclarées sur la colonne<sup id="cite_ref-syntax_21-0" class="reference"><a href="#cite_note-syntax-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> alors que les contraintes <tt>PRIMARY KEY</tt>, <tt>UNIQUE</tt>, <tt>CHECK</tt> et <tt>FOREIGN KEY</tt> peuvent être déclarées sur une ou plusieurs colonnes<sup id="cite_ref-syntax_21-1" class="reference"><a href="#cite_note-syntax-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>.
</p><p>La contrainte <tt>UNIQUE</tt> crée automatiquement un <a href="Index_(base_de_donn%C3%A9es)" title="Index (base de données)">index</a> sur la ou les colonnes sur lesquelles elle est appliquée<sup id="cite_ref-SQLite_Query_Language:_CREATE_TABLE_17-1" class="reference"><a href="#cite_note-SQLite_Query_Language:_CREATE_TABLE-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="PRIMARY_KEY"><tt>PRIMARY KEY</tt></h4></div>
<p>La contrainte de <a href="Cl%C3%A9_primaire" title="Clé primaire">clé primaire</a> va créer une contrainte <tt>UNIQUE</tt> sur la ou les colonnes concernées, cependant, et contrairement à <a href="Structured_Query_Language" title="Structured Query Language">la norme</a>, la contrainte <tt>PRIMARY KEY</tt> de SQLite autorise des entrées ayant la valeur <tt>NULL</tt>. Il s'agit d'un non-respect de la norme, et cet écart pourrait être réglé dans les prochaines versions<sup id="cite_ref-SQLite_Query_Language:_CREATE_TABLE_17-2" class="reference"><a href="#cite_note-SQLite_Query_Language:_CREATE_TABLE-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>. Il est donc conseillé de rajouter la contrainte <tt>NOT NULL</tt> à la déclaration d'une clé primaire.
</p>
<div class="mw-heading mw-heading5"><h5 id="ROWID_et_AUTOINCREMENT"><tt>ROWID</tt> et <tt>AUTOINCREMENT</tt></h5></div>
<p>Chaque ligne d'une table est identifiée par un entier signé de 64 bits appelé <tt>ROWID</tt>. Lorsqu'une table est déclarée avec une et une seule colonne <tt>INTEGER PRIMARY KEY</tt>, cette colonne devient un alias du <tt>ROWID</tt>. L'utilisation d'un alias à l'identifiant <tt>ROWID</tt> permet d'augmenter la vitesse des recherches, celles-ci pouvant être jusqu'à deux fois plus rapides qu'avec une clé primaire normale associée à son index d'unicité<sup id="cite_ref-SQLite_Query_Language:_CREATE_TABLE_17-3" class="reference"><a href="#cite_note-SQLite_Query_Language:_CREATE_TABLE-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>.
</p><p>Lorsque la table est vide, l'algorithme attribue la valeur <tt>1</tt> à l'identifiant, qu'il incrémente pour chaque nouvel enregistrement, jusqu'à atteindre la limite d'un entier signé de 64 bits (<span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{63}-1=9223372036854775807}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mn>63</mn>
</mrow>
</msup>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>=</mo>
<mn>9223372036854775807</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle 2^{63}-1=9223372036854775807}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/c5f88ba762725b01c4016378410a3e0534292be8.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:32.227ex; height:2.843ex;" alt="{\displaystyle 2^{63}-1=9223372036854775807}" loading="lazy"></span>). Une fois cette limite atteinte, il va réutiliser les espaces libérés par les enregistrements supprimés. L'attribution des identifiants n'est donc plus incrémentale mais aléatoire<sup id="cite_ref-SQLite_Autoincrement_22-0" class="reference"><a href="#cite_note-SQLite_Autoincrement-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>.
</p><p>Il est possible d'utiliser le mot clé <tt>AUTOINCREMENT</tt>. Ce dernier modifie légèrement l'algorithme : une fois la limite d'un entier atteinte, il ne sera plus possible d'insérer un nouvel enregistrement. Ceci permet de garantir qu'un même identifiant ne sera jamais porté par deux enregistrements distincts, même s'ils ne coexistent pas à un même moment<sup id="cite_ref-SQLite_Autoincrement_22-1" class="reference"><a href="#cite_note-SQLite_Autoincrement-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="FOREIGN_KEY"><tt>FOREIGN KEY</tt></h4></div>
<p>Depuis la version <tt>3.6.19</tt>, SQLite est apte à gérer les contraintes de <a href="Cl%C3%A9_%C3%A9trang%C3%A8re" title="Clé étrangère">clé étrangère</a>.
</p><p>Pour des raisons de compatibilité descendante, le support des clés étrangères n'est pas activé par défaut. L'activation se fait par le <a href="#Pragmas">pragma</a> <tt>foreign_keys</tt><sup id="cite_ref-foreign_23-0" class="reference"><a href="#cite_note-foreign-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>.
</p><p>Toute colonne référencée par une clé étrangère doit être déclarée comme <tt>UNIQUE</tt> (<tt>PRIMARY KEY</tt> crée une clé d'unicité)<sup id="cite_ref-foreign_23-1" class="reference"><a href="#cite_note-foreign-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>. SQLite ne prend pas encore en compte la clause <tt>MATCH</tt> dans la définition des clés étrangères<sup id="cite_ref-foreign_23-2" class="reference"><a href="#cite_note-foreign-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Déclencheurs"><span id="D.C3.A9clencheurs"></span>Déclencheurs</h3></div>
<p>SQLite gère d'une manière assez complète les déclencheurs (triggers en anglais). Des déclencheurs <tt>BEFORE</tt>, <tt>AFTER</tt> ou <tt>INSTEAD OF</tt> peuvent être déclarés. SQLite supporte l'option <tt>FOR EACH ROW</tt> (fonctionnement par défaut) mais pas <tt>FOR EACH STATEMENT</tt><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Vues">Vues</h3></div>
<p>SQLite permet la création de <a href="Vue_(base_de_donn%C3%A9es)" title="Vue (base de données)">vues</a> pour alléger la longueur des requêtes.
</p><p>Les vues sont en lecture seule, mais il est possible d'utiliser des déclencheurs avec la propriété <tt>INSTEAD OF</tt> pour simuler la possibilité de modifier celles-ci<sup id="cite_ref-SQLite_Query_Language:_CREATE_VIEW_25-0" class="reference"><a href="#cite_note-SQLite_Query_Language:_CREATE_VIEW-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Transactions">Transactions</h3></div>
<p>Toutes les commandes SQL visant à modifier l'état de la base de données (à peu près tout autre ordre que <tt>SELECT</tt>) impliquent la création d'une <a href="Transaction_(base_de_donn%C3%A9es)" class="mw-redirect" title="Transaction (base de données)">transaction</a> qui leur est dédiée, pour autant qu'une transaction qui inclut la commande ne soit déjà créée. Ceci signifie que toutes les commandes sont <a href="Atomicit%C3%A9_(Informatique)" class="mw-redirect" title="Atomicité (Informatique)">atomiques</a>. Si l'exécution de la commande ne provoque pas d'erreur, la modification est automatiquement validée (autocommit), mais si ce n'est pas le cas, l'intégralité des modifications effectuées par la commande est annulée.
</p><p>Toutes les modifications sur la base de données sont sérialisées : une seule modification est effectuée à la fois et la base est <a href="Verrou_(informatique)" title="Verrou (informatique)">verrouillée</a> en lecture lors d'une modification.
</p><p>SQLite permet la création de transactions ainsi que la création de points de retour<sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> (<tt>SAVEPOINT</tt>) mais ne permet pas de gérer différents degrés d'isolation. Dans une transaction, lors du premier appel à une commande de lecture, un verrou partagé<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup> est activé qui autorise l'accès en lecture mais interdit toute modification des données par une autre transaction, lors du premier appel en écriture, l'ensemble de la base est verrouillée en lecture et en écriture pour les autres transactions<sup id="cite_ref-SQLite_Query_Language:_BEGIN_TRANSACTION_28-0" class="reference"><a href="#cite_note-SQLite_Query_Language:_BEGIN_TRANSACTION-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="ACID">ACID</h4></div>
<p>Même si SQLite respecte à première vue l'ensemble des <a href="Propri%C3%A9t%C3%A9s_ACID" title="Propriétés ACID">propriétés ACID</a>, qui déterminent la fiabilité d'un système transactionnel, il reste possible de placer la base de données dans un état incohérent du fait que les types ne sont pas forcés : il est possible, par exemple, d'insérer une <a href="Chaine_de_caract%C3%A8res" class="mw-redirect" title="Chaine de caractères">chaine de caractères</a> dans une colonne dont le type d'affinité est défini comme un <a href="Entier_(informatique)" title="Entier (informatique)">entier</a>. Dans leurs interprétations strictes, SQLite ne respecte pas l'ensemble des propriétés ACID.
</p>
<div class="mw-heading mw-heading3"><h3 id="Tables_temporaires">Tables temporaires</h3></div>
<p>SQLite permet la création de tables temporaires dont la définition, les données et les index ne sont pas enregistrés dans le fichier de la base de données et sont donc perdus lors de la fermeture de celle-ci<sup id="cite_ref-SQLite_Query_Language:_CREATE_TABLE_17-4" class="reference"><a href="#cite_note-SQLite_Query_Language:_CREATE_TABLE-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Tables_virtuelles">Tables virtuelles</h3></div>
<p>Il est possible de créer, directement depuis la bibliothèque, son propre moteur de stockage pour simuler une table de la base de données. La création d'une table virtuelle se fait par l'implémentation d'un ensemble de fonctions. L'accès à la table se fait de façon tout à fait transparente, hormis l'absence de certaines fonctionnalités (impossible de créer des déclencheurs ou des index ou de modifier la structure de la table)<sup id="cite_ref-The_Virtual_Table_Mechanism_Of_SQLite_29-0" class="reference"><a href="#cite_note-The_Virtual_Table_Mechanism_Of_SQLite-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup>.
</p><p>Ce mécanisme permet l'accès à l'aide du langage SQL à toute sorte de source de données, comme des fichiers <a href="Comma-separated_values" title="Comma-separated values">CSV</a> ou <a href="XML" class="mw-redirect" title="XML">XML</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Fonctions_utilisateur">Fonctions utilisateur</h3></div>
<p>SQLite offre une interface de programmation, via sa bibliothèque, pour la création de <a href="Fonction_(informatique)" class="mw-redirect" title="Fonction (informatique)">fonctions</a> utilisateur. L'ensemble de fonctions définies par la bibliothèque peuvent être <a href="Surcharge_des_op%C3%A9rateurs" class="mw-redirect" title="Surcharge des opérateurs">surchargées</a>, pour redéfinir leur implémentation. Certains opérateurs, comme <tt>LIKE</tt> utilisent en sous-couche des fonctions éponymes qui peuvent elles aussi être remplacées par des fonctions définies par l'utilisateur<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup>.
</p><p>SQLite ne supporte pas la création de <a href="Proc%C3%A9dure_(informatique)" class="mw-redirect" title="Procédure (informatique)">procédures</a>, mais leur nécessité est moindre du fait de l'architecture embarquée.
</p>
<div class="mw-heading mw-heading3"><h3 id="Index">Index</h3></div>
<p>SQLite permet la création d'<a href="Index_(base_de_donn%C3%A9es)" title="Index (base de données)">index</a> sur une ou plusieurs colonnes. Les index peuvent être montants (<tt>ASC</tt>) ou descendants (<tt>DESC</tt>) ainsi qu'uniques (ceci s'apparente à la création d'une contrainte d'unicité)<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup>. SQLite utilise ses index en <a href="Arbre_B" title="Arbre B">arbre B</a>.
</p><p>SQLite introduit le mot clé <tt>EXPLAIN</tt> qui permet de décrire les étapes nécessaires à l'exécution d'une commande ainsi que les index utilisés<sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Pragmas">Pragmas</h3></div>
<p>Les pragmas sont des paires de clés/valeurs de configuration de SQLite. Ils sont internes à une base de données et permettent de décrire de quelle façon SQLite doit interpréter certaines opérations<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>. Ils permettent également d'activer ou de désactiver certaines fonctionnalités, notamment pour des raisons de compatibilité descendante.
</p>
<div class="mw-heading mw-heading3"><h3 id="Adoption">Adoption</h3></div>
<p>Outre son implantation officielle en <a href="C_(langage)" title="C (langage)">C</a>, des <a href="Binding" title="Binding">bindings</a> pour d'autres <a href="Langage_de_programmation" title="Langage de programmation">langages</a> existent (<a href="C%2B%2B" title="C++">C++</a>, <a href="Perl_(langage)" title="Perl (langage)">Perl</a>, <a href="Ruby" title="Ruby">Ruby</a>, <a href="Tool_Command_Language" title="Tool Command Language">TCL</a>, les langages utilisant le <a href=".NET_Framework" title=".NET Framework">framework .NET</a> via un pilote <a href="ADO.NET" class="mw-redirect" title="ADO.NET">ADO.NET</a><sup id="cite_ref-System.Data.SQLite_34-0" class="reference"><a href="#cite_note-System.Data.SQLite-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup>...).
</p><p>Quelques langages de programmation incluent SQLite dans leur <a href="Biblioth%C3%A8que_standard" title="Bibliothèque standard">bibliothèque standard</a>, c'est le cas, entre autres, de <a href="Python_(langage)" title="Python (langage)">Python</a><sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup> (depuis la version 2.5) et de <a href="PHP%3A_Hypertext_Preprocessor" class="mw-redirect" title="PHP: Hypertext Preprocessor">PHP</a><sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup> (depuis la version 5).
</p><p>SQLite est utilisée dans de nombreux <a href="Logiciel_libre" title="Logiciel libre">logiciels libres</a>, comme <a href="Mozilla_Firefox" title="Mozilla Firefox">Mozilla Firefox</a> ou <a href="SPIP_(logiciel)" title="SPIP (logiciel)">SPIP</a> (depuis 2007)<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup>, dans de nombreuses distributions <a href="GNU/Linux" class="mw-redirect" title="GNU/Linux">GNU/Linux</a>, dans les <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">systèmes d'exploitation</a> serveurs et de bureau comme <a href="Solaris_(syst%C3%A8me_d'exploitation)" title="Solaris (système d'exploitation)">Solaris</a> ou mobiles comme <a href="Android" title="Android">Android</a>, <a href="Firefox_OS" title="Firefox OS">Firefox OS</a> ou <a href="Symbian_OS" title="Symbian OS">Symbian</a>, dans certains logiciels d'<a href="Apple" title="Apple">Apple</a>, de <a href="Google" title="Google">Google</a>, d'<a href="Adobe_Systems" class="mw-redirect" title="Adobe Systems">Adobe</a> et de <a href="McAfee" title="McAfee">McAfee</a> ainsi que dans certains appareils de <a href="Philips" title="Philips">Philips</a><sup id="cite_ref-Well-Known_Users_Of_SQLite_4-1" class="reference"><a href="#cite_note-Well-Known_Users_Of_SQLite-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>.
</p><p>SQLite est également offerte avec la version 8.4 du Logiciel Primavera P6 d'Oracle.
</p><p>Le brouillon concernant le stockage d'une base de données SQL du côté du <a href="Navigateur_web" title="Navigateur web">navigateur web</a> publiée par le <a href="W3C" class="mw-redirect" title="W3C">W3C</a> stipule également que les logiciels implémentant cette fonctionnalité doivent être capable d'interpréter correctement le dialecte de SQLite dans sa version <i>3.6.19</i><sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup>. Même si SQLite n'est pas imposé par le W3C, <a href="Google_Chrome" title="Google Chrome">Google Chrome</a><sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">[</span>39<span class="cite-bracket">]</span></a></sup>, <a href="Safari_(logiciel)" class="mw-redirect" title="Safari (logiciel)">Apple Safari</a><sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup> et <a href="Opera_Browser" class="mw-redirect" title="Opera Browser">Opera Browser</a><sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup> l'utilisent pour cet usage.
</p>
<div class="mw-heading mw-heading2"><h2 id="Différentes_versions"><span id="Diff.C3.A9rentes_versions"></span>Différentes versions</h2></div>
<p>SQLite existe sous 2 principales versions : 2.x et 3.x. Les versions 2 et 3 de SQLite se distinguent par plusieurs évolutions :
</p>
<ul><li>les fichiers des bases ne sont pas toujours compatibles entre eux. Cela signifie qu’une base au format SQLite 2 ne pourra pas être lue à coup sûr par SQLite 3 et <em>vice versa</em> ;</li>
<li>des syntaxes SQL ne sont pas présentes en SQLite 2 : <tt>IF NOT EXISTS</tt> pour les requêtes, et <tt>CREATE TABLE</tt>, <tt>ADD COLUMN</tt> et <tt>RENAME COLUMN</tt> pour les requêtes <tt>ALTER TABLE</tt> ;</li>
<li>seules les versions les plus récentes de SQLite prennent en charge certaines fonctionnalités plus avancées, comme la gestion des <a href="Cl%C3%A9_%C3%A9trang%C3%A8re" title="Clé étrangère">clés étrangères</a> ou les contraintes <tt>CHECK</tt> ;</li>
<li>SQLite 3 prend en charge les normes <a href="UTF-8" title="UTF-8">UTF-8</a> et <a href="UTF-16" title="UTF-16">UTF-16</a> ;</li>
<li>SQLite 3 encode les identifiants de lignes sur <a href="64_bits" class="mw-redirect" title="64 bits">64 bits</a> et non plus sur <a href="32_bits" class="mw-redirect" title="32 bits">32 bits</a>, ce qui permet un nombre de lignes quasiment illimité ;</li>
<li>PHP utilise une classe <a href="PHP_Data_Objects" title="PHP Data Objects">PDO</a> ou, avec PHP 5.3, des fonctions <tt>sqlite3_*()</tt> pour gérer SQLite 3 alors qu’il utilise des fonctions <tt>sqlite_*()</tt> pour SQLite 2.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Utilisations">Utilisations</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Systèmes_d'exploitation"><span id="Syst.C3.A8mes_d.27exploitation"></span>Systèmes d'exploitation</h3></div>
<p>SQLite est installé par défaut sur les systèmes suivants :
</p>
<ul><li><a href="Android" title="Android">Android</a></li>
<li><a href="BlackBerry_10" title="BlackBerry 10">BlackBerry 10 OS</a></li>
<li><a href="FreeBSD" title="FreeBSD">FreeBSD</a></li>
<li><a href="Illumos" title="Illumos">illumos</a></li>
<li><a href="IOS" title="IOS">iOS</a></li>
<li><a href="Mac_OS_X_v10.4" title="Mac OS X v10.4">Mac OS X 10.4</a> (et les versions suivantes de <a href="MacOS" title="MacOS">Mac OS</a>)</li>
<li><a href="Maemo" title="Maemo">Maemo</a></li>
<li><a href="MeeGo" title="MeeGo">MeeGo</a></li>
<li><a href="MorphOS" title="MorphOS">MorphOS</a></li>
<li><a href="NetBSD" title="NetBSD">NetBSD</a></li>
<li><a href="Solaris_(syst%C3%A8me_d'exploitation)" title="Solaris (système d'exploitation)">Solaris 10</a></li>
<li><a href="Symbian_OS" title="Symbian OS">Symbian OS</a></li>
<li><a href="Tizen" title="Tizen">Tizen</a></li>
<li><a href="WebOS" title="WebOS">webOS</a></li>
<li><a href="Windows_10" title="Windows 10">Windows 10</a>, et les versions suivantes de Windows</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style="column-width:36em; column-count:2;"><ol class="references">
<li id="cite_note-wikidata-dbf86f20123c0534703f2f60bd6ddbbd36b2b3d9-1"><span class="mw-cite-backlink"><a href="#cite_ref-wikidata-dbf86f20123c0534703f2f60bd6ddbbd36b2b3d9_1-0">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://sqlite.org/releaselog/3_50_4.html"><cite style="font-style:normal;"><span class="lang-en" lang="en">SQLite Release 3.50.4 On 2025-07-30</span></cite></a> », <time class="nowrap" datetime="2025-07-30" data-sort-value="2025-07-30">30 juillet 2025</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2025-07-30" data-sort-value="2025-07-30">30 juillet 2025</time>)</small></span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/copyright.html"><cite style="font-style:normal;">SQLite Copyright</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-About_SQLite-3"><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/about.html"><cite style="font-style:normal;">About SQLite</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-Well-Known_Users_Of_SQLite-4"><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/famous.html"><cite style="font-style:normal;">Well-Known Users Of SQLite</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/mostdeployed.html"><cite style="font-style:normal;">Most Widely Deployed SQL Database Engine</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-Owens06-6"><span class="mw-cite-backlink"><a href="#cite_ref-Owens06_6-0">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Owens2006"><span class="ouvrage" id="Michael_Owens2006"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Michael <span class="nom_auteur">Owens</span>, <cite class="italique" lang="en">The Definitive Guide to SQLite</cite>, Berkeley, Apress, <time>2006</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">978-1-59059-673-9</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">DOI</a> <span class=" noarchive nowrap"><a rel="nofollow" class="external text" href="https://dx.doi.org/10.1007/978-1-4302-0172-4_1">10.1007/978-1-4302-0172-4_1</a></span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+Definitive+Guide+to+SQLite&rft.place=Berkeley&rft.pub=Apress&rft.aulast=Owens&rft.aufirst=Michael&rft.date=2006&rft.isbn=978-1-59059-673-9&rft_id=info%3Adoi%2F10.1007%2F978-1-4302-0172-4_1&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ASQLite"></span></span></span></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://sqlite.org/locrsf.html"><cite style="font-style:normal;">LoC Recommended Storage Format</cite></a> » <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2023-11-01" data-sort-value="2023-11-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> novembre 2023</time>)</small></span></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a> </span><span class="reference-text"><span class="ouvrage"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="https://www.loc.gov/preservation/digital/formats/fdd/fdd000461.shtml#local"><cite style="font-style:normal;" lang="en">Sustainability of Digital Formats: Planning for Library of Congress Collections — SQLite, Version 3</cite></a> » <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2023-11-01" data-sort-value="2023-11-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> novembre 2023</time>)</small></span></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/opcode.html"><cite style="font-style:normal;">The SQLite Bytecode Engine</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><a href="#cite_ref-10">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/vdbe.html"><cite style="font-style:normal;">The Virtual Database Engine of SQLite</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/arch.html"><cite style="font-style:normal;">Architecture of SQLite</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-SQL_Features_That_SQLite_Does_Not_Implement-12"><span class="mw-cite-backlink"><a href="#cite_ref-SQL_Features_That_SQLite_Does_Not_Implement_12-0">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/omitted.html"><cite style="font-style:normal;">SQL Features That SQLite Does Not Implement</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/zeroconf.html"><cite style="font-style:normal;">Zero-Configuration</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><a href="#cite_ref-14">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/selfcontained.html"><cite style="font-style:normal;">SQLite is a Self Contained System</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/onefile.html"><cite style="font-style:normal;">SQLite: Single File Database</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-Datatypes_In_SQLite_Version_3-16"><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/datatype3.html"><cite style="font-style:normal;">Datatypes In SQLite Version 3</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-SQLite_Query_Language:_CREATE_TABLE-17"><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_createtable.html"><cite style="font-style:normal;">SQLite Query Language: CREATE TABLE</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/version3.html"><cite style="font-style:normal;">SQLite Version 3 Overview</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><a href="#cite_ref-19">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/nulls.html"><cite style="font-style:normal;">NULL Handling in SQLite</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><a href="#cite_ref-20">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_datefunc.html"><cite style="font-style:normal;">SQLite Query Language: Date And Time Functions</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-syntax-21"><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/syntaxdiagrams.html"><cite style="font-style:normal;">Syntax Diagrams For SQLite</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-SQLite_Autoincrement-22"><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/autoinc.html"><cite style="font-style:normal;">SQLite Autoincrement</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-foreign-23"><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/foreignkeys.html"><cite style="font-style:normal;">SQLite Foreign Key Support</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><a href="#cite_ref-24">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_createtrigger.html"><cite style="font-style:normal;">SQLite Query Language: CREATE TRIGGER</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-SQLite_Query_Language:_CREATE_VIEW-25"><span class="mw-cite-backlink"><a href="#cite_ref-SQLite_Query_Language:_CREATE_VIEW_25-0">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_createview.html"><cite style="font-style:normal;">SQLite Query Language: CREATE VIEW</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><a href="#cite_ref-26">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_savepoint.html"><cite style="font-style:normal;">SQLite Query Language: SAVEPOINT</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><a href="#cite_ref-27">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lockingv3.html"><cite style="font-style:normal;">File Locking And Concurrency In SQLite Version 3</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-SQLite_Query_Language:_BEGIN_TRANSACTION-28"><span class="mw-cite-backlink"><a href="#cite_ref-SQLite_Query_Language:_BEGIN_TRANSACTION_28-0">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_transaction.html"><cite style="font-style:normal;">SQLite Query Language: BEGIN TRANSACTION</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-The_Virtual_Table_Mechanism_Of_SQLite-29"><span class="mw-cite-backlink"><a href="#cite_ref-The_Virtual_Table_Mechanism_Of_SQLite_29-0">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/vtab.html"><cite style="font-style:normal;">The Virtual Table Mechanism Of SQLite</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><a href="#cite_ref-30">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_corefunc.html"><cite style="font-style:normal;">SQLite Query Language: Core Functions</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><a href="#cite_ref-31">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_createindex.html"><cite style="font-style:normal;">SQLite Query Language: CREATE INDEX</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><a href="#cite_ref-32">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/lang_explain.html"><cite style="font-style:normal;">SQLite Query Language: EXPLAIN</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-33"><span class="mw-cite-backlink"><a href="#cite_ref-33">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.sqlite.org/pragma.html"><cite style="font-style:normal;">Pragma statements supported by SQLite</cite></a> », sur <span class="italique">www.sqlite.org</span></span></span>
</li>
<li id="cite_note-System.Data.SQLite-34"><span class="mw-cite-backlink"><a href="#cite_ref-System.Data.SQLite_34-0">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external free" href="http://sqlite.phxsoftware.com/">http://sqlite.phxsoftware.com/</a></span>
</li>
<li id="cite_note-35"><span class="mw-cite-backlink"><a href="#cite_ref-35">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://docs.python.org/3/library/sqlite3.html"><cite style="font-style:normal;">sqlite3 — DB-API 2.0 interface for SQLite databases — Python 3.7.3 documentation</cite></a> », sur <span class="italique">docs.python.org</span></span></span>
</li>
<li id="cite_note-36"><span class="mw-cite-backlink"><a href="#cite_ref-36">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.php.net/"><cite style="font-style:normal;">PHP: Hypertext Preprocessor</cite></a> », sur <span class="italique">www.php.net</span></span></span>
</li>
<li id="cite_note-37"><span class="mw-cite-backlink"><a href="#cite_ref-37">↑</a> </span><span class="reference-text"><span class="ouvrage" id="A.Marcillaud2007"><span class="ouvrage" id="Déesse_A.Matthieu_Marcillaud2007">Déesse A. et Matthieu Marcillaud, « <a rel="nofollow" class="external text" href="https://contrib.spip.net/Portage-de-SPIP-en-SQLite"><cite style="font-style:normal;">Portage de SPIP en SQLite</cite></a> », sur <span class="italique">contrib.spip.net</span>, <time class="nowrap" datetime="2007-12-16" data-sort-value="2007-12-16">16 décembre 2007</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2021-12-14" data-sort-value="2021-12-14">14 décembre 2021</time>)</small></span></span></span>
</li>
<li id="cite_note-38"><span class="mw-cite-backlink"><a href="#cite_ref-38">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://dev.w3.org/html5/webdatabase/"><cite style="font-style:normal;">Web SQL Database</cite></a> », sur <span class="italique">dev.w3.org</span></span></span>
</li>
<li id="cite_note-39"><span class="mw-cite-backlink"><a href="#cite_ref-39">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://blog.chromium.org/2010/01/more-resources-for-developers.html"><cite style="font-style:normal;">More Resources for Developers</cite></a> »</span></span>
</li>
<li id="cite_note-40"><span class="mw-cite-backlink"><a href="#cite_ref-40">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://webkit.org/demos/sticky-notes/index.html"><cite style="font-style:normal;">WebKit HTML 5 SQL Storage Notes Demo</cite></a> », sur <span class="italique">webkit.org</span></span></span>
</li>
<li id="cite_note-41"><span class="mw-cite-backlink"><a href="#cite_ref-41">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://dev.opera.com/blog/"><cite style="font-style:normal;">Dev.Opera — Blog</cite></a> », sur <span class="italique">dev.opera.com</span></span></span>
</li>
</ol>
</div>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.sqlite.org">Site officiel</a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="https://blog.lizardwrangler.com/2008/02/27/the-sqlite-consortium/"><i>The SQLite Consortium</i></a>, <a href="Mitchell_Baker" title="Mitchell Baker">Mitchell Baker</a>, le 27 février 2008.</li>
<li><a rel="nofollow" class="external text" href="http://www.01net.com/editorial/372465/sqlite-devient-la-base-de-donnees-standard-du-web-deconnecte/">SQLite devient la base de données standard du Web déconnecté</a>, David Maume, <a href="01net_(site_web)" title="01net (site web)">01net</a>, <time class="nowrap" datetime="2008-02-29" data-sort-value="2008-02-29">29 février 2008</time>.</li></ul>
<div class="navbox-container" style="clear:both;">
</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail des bases de données</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail des logiciels libres</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-10-12" href="https://fr.wikipedia.org/wiki/?title=SQLite&oldid=229694561">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>